/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.escom.info.scanner.jsf;

import com.escom.administracion.dao.DocenteDispositivoDAO;
import com.escom.administracionperfiles.hbm.dto.Docente;
import com.escom.administracionperfiles.hbm.dto.DocenteDispositivo;
import com.escom.administracionperfiles.hbm.dto.DocenteDispositivoId;
import com.escom.administracionperfiles.hbm.dto.Usuarios;
import com.escom.cliente.exception.DAOException;
import com.escom.info.scanner.jsf.util.JsfUtil;
import escom.libreria.info.login.sistema.jsf.SistemaControllerDAO;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author yamil
 */
public class DocenteDispositivoController implements Serializable{

    private DocenteDispositivoDAO facade;
    private DocenteDispositivo current;
    private List<DocenteDispositivo>   listaDocenteDispositivos;
    private Docente docente;
    private SistemaControllerDAO  sistemaController;//Aplicando el concepto de INYECCION DE DEPENDECIA
    private  Usuarios usuario;

     public SistemaControllerDAO getSistemaController() {
        return sistemaController;
    }

    public void setSistemaController(SistemaControllerDAO sistemaController) {
        this.sistemaController = sistemaController;
    }

      public Usuarios getUsuario() {
        if(usuario==null)
        {
            try
            {
             usuario = sistemaController.getUsuarios();
            } catch (Exception ex) {
                Logger.getLogger(AlumnoDispositivoController.class.getName()).log(Level.SEVERE, null, ex);
                ex.printStackTrace();
            }
        }
        return usuario;
    }

    public void setUsuario(Usuarios usuario) {
        this.usuario = usuario;
    }




     public DocenteDispositivo getSelected() {
       if(current==null)
       {
           current=new DocenteDispositivo();
           current.setId(new DocenteDispositivoId());
       }

        return current;

    }

     public Docente getDocente() {
        return docente;
    }

    public void setAlumno(Docente docente) {
        this.docente = docente;
    }




    public void setCurrent(DocenteDispositivo current) {
        this.current = current;
    }

   public DocenteDispositivoDAO getFacade() {
        return facade;
    }

    public void setFacade(DocenteDispositivoDAO facade) {
        this.facade = facade;
    }

  



public String prepareCreate(){
        current=new DocenteDispositivo();
        return "Create";
    }

    public List<DocenteDispositivo> getListaDocenteDispositivos(){
        try {
            listaDocenteDispositivos = getFacade().findAll();

        } catch (DAOException ex) {
            Logger.getLogger(DocenteDispositivoController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return listaDocenteDispositivos;
    }


public List<DocenteDispositivo> getListaDispositivoByDocente(){
    List<DocenteDispositivo> l=null;
          if(docente!=null)
          {

            try {
                
         
                l=facade.finDocenteBoletDispositivo(docente.getBoleta());
            } catch (DAOException ex) {
                Logger.getLogger(DocenteDispositivoController.class.getName()).log(Level.SEVERE, null, ex);
            }
       }
    return l;
}
     public String create(){
        try {
            if(getUsuario()!=null)
            {
                boolean a=getFacade().finDocenteBoletANDMacDispositivo(getDocente().getBoleta(),getUsuario().getDireccionMac());
                if(a)
                {
                 JsfUtil.addErrorMessage("Error el dispositivo ya se encuentra registrado")   ;
                 return null;
                }
                current=new DocenteDispositivo();
                current.setId(new DocenteDispositivoId());
                current.setDocente(getDocente());
                current.getId().setBoleta(getDocente().getBoleta());
                current.getId().setDireccionmac(getUsuario().getDireccionMac());
                getFacade().create(current);
                JsfUtil.addSuccessMessage("Dispositivo  capturado Satisfactoriamente");
                return "View";
            }else{
                JsfUtil.addErrorMessage("Error DIRECCION MAC NO VALIDAD");
            }
        } catch (DAOException ex) {
            Logger.getLogger(AlumnoDispositivoController.class.getName()).log(Level.SEVERE, null, ex);
            JsfUtil.addErrorMessage("Error al capturar Dispositivo");
            return null;
        }
        return null;
    }




    public String update(){
          try {
             current.setDocente(current.getDocente());

            current.setId(current.getId());
            getFacade().edit(current);


            JsfUtil.addSuccessMessage("DocenteDispositivo actualizado Satisfactoriamente");
        } catch (Exception ex) {
            Logger.getLogger(DocenteDispositivoController.class.getName()).log(Level.SEVERE, null, ex);
        }
          return "View";
    }

    public String prepareEdit(DocenteDispositivo dominio){
        current=dominio;
        return "Edit";
    }

    public String prepareView(DocenteDispositivo dominio){
        current=dominio;

        return "View";
    }

    public void prepareDestroy(DocenteDispositivo dominio){
        try {
            //current=dominio;
            getFacade().remove(dominio);
            JsfUtil.addSuccessMessage("DocenteDispositivo eliminado Satisfactoriamente");
        } catch (DAOException ex) {
            Logger.getLogger(DocenteDispositivoController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public String prepareList(){
        return "List";
    }

    public String prepareDocente(Docente docente){
        this.docente = docente;
        return "/docenteDispositivo/List";
    }

}
